
package com.scs.application.modules.base.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.scs.application.core.model.RestResult;
import com.scs.application.core.service.IBaseService;
import com.scs.application.modules.base.dto.AutoCorrectionCatalogDTO;
import com.scs.application.modules.base.dto.DisabledParamDTO;
import com.scs.application.modules.base.entity.Material;
import com.scs.application.modules.base.request.MaterialQueryRequest;
import com.scs.application.modules.base.vo.ExcelMaterialVO;
import com.scs.application.modules.base.vo.MaterialVO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;


/**
 * 商品 service 接口
 */
public interface MaterialService extends IBaseService<Material> {

    /**
     * 分页查询
     *
     * @param request
     * @return
     */
    IPage<MaterialVO> page(MaterialQueryRequest request);

    List<MaterialVO> list(MaterialQueryRequest request);

    /**
     * excel导出模板查询
     */
    List<ExcelMaterialVO> listExcel(MaterialQueryRequest request);

    /**
     * 依据注册证号，自动修正商品分类
     *
     * @param forceAll    强制修改所有，当为 {@code false} 时，只会更新catalog_id = 0 的数据
     * @param todayCreate 今日创建的数据，当为 {@code true} 时，只会更新gmt_create > 今日的数据
     */
    void autoCorrectionCatalog(AutoCorrectionCatalogDTO dto);

    String disabledBatch(@Valid DisabledParamDTO disabledParam, boolean isDisabled);

    // 导入商品
    @Transactional(rollbackFor = Exception.class)
    RestResult excelImportForDataImport(MultipartFile file, Map<String, String> reqData);
}
